﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

using AloneLibrary.GameObjects;

namespace AloneLibrary.Services.Camera
{
	public interface ICameraFocus
	{
		DynamicGameObject FocusedObject { get; }
	}

	public interface ICameraHandler
	{
        /// <summary>
        /// Gets the projection.
        /// </summary>
        /// <value>The projection.</value>
		Matrix Projection { get; }

        /// <summary>
        /// Gets the view.
        /// </summary>
        /// <value>The view.</value>
		Matrix View { get; }

        /// <summary>
        /// Gets or sets the position.
        /// </summary>
        /// <value>The position.</value>
		Vector3 Position { get; set; }

        /// <summary>
        /// Gets or sets the rotation.
        /// </summary>
        /// <value>The rotation.</value>
		Vector2 Rotation { get; set; }


        /// <summary>
        /// Gets or sets the focused object.
        /// </summary>
        /// <value>The focused object.</value>
		GameObject FocusedObject { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="ICameraHandler"/> is zoomed.
        /// </summary>
        /// <value><c>true</c> if zoomed; otherwise, <c>false</c>.</value>
		bool Zoomed { get; set; }
	}
}
